package com.zw.pdm.module.designtask.mapper;

import com.zw.pdm.entity.basic.DictCommon;
import com.zw.pdm.entity.basic.Org;
import com.zw.pdm.entity.designtask.DsnProStruct;
import com.zw.pdm.entity.production.MakeSheet;
import com.zw.pdm.entity.rep.Sheet;
import com.zw.pdm.module.designtask.model.ProStructTastModel;

import java.util.List;

/**
 * @Description:
 * @Author: China.wsg
 * @Date: 2020/10/14 15:15
 */
public interface ProStructMapper {

    /**
     * 按条件查询待创建产品结构列表
     *
     * @param proStructTastModel
     * @return
     */
    List<ProStructTastModel> findProStructTastCreateByQuery(ProStructTastModel proStructTastModel);

    /**
     * 按条件查询产品结构提交/审核状态
     *
     * @param proStructTastModel
     * @return
     */
    DsnProStruct findProStructStatusByQuery(ProStructTastModel proStructTastModel);

    /**
     * 提交产品结构
     *
     * @param dsnProStruct
     * @return
     */
    int subProStructByProIdAndCreateCode(DsnProStruct dsnProStruct);

    /**
     * 按条件查询待审核产品结构列表
     *
     * @param proStructTastModel
     * @return
     */
    List<ProStructTastModel> findProStructTastCheckByQuery(ProStructTastModel proStructTastModel);

    /**
     * 驳回产品结构（更新条件项目ID和创建人）
     *
     * @param dsnProStruct
     * @return
     */
    int rejectProStructByProIdAndCreateCode(DsnProStruct dsnProStruct);

    /**
     * 审核产品结构
     *
     * @param dsnProStruct
     * @return
     */
    int checkProStructByProId(DsnProStruct dsnProStruct);

    /**
     * 未提交的数量
     *
     * @param proId
     * @return
     */
    int findProStructSavedCount(Integer proId);

    /**
     * 按项目ID查询项目任务信息
     *
     * @param proId
     * @return
     */
    List<ProStructTastModel> findProTastByQuery(Integer proId);

    /**
     * 项目是否审核（审核：count>0）
     *
     * @param proId
     * @return
     */
    int findProStructCheckStatusByQuery(Integer proId);

    /**
     * 按项目ID删除产品结构审核状态
     *
     * @param proId
     * @return
     */
    int delProStructChectStatusByProId(Integer proId);

    /**
     * 审核产品结构
     *
     * @param proId
     * @return
     */
    int cancelProStructByProId(Integer proId);

    /**
     * 查询类型
     *
     * @param groupName
     * @return
     */
    List<DictCommon> findDictByGroupName(String groupName);

    /**
     * 按照用户账号取得审核级别
     *
     * @param account
     * @return
     */
    Org findOrgInfoByAccount(String account);

    /**
     * 按条件查询项目下部分提报计划数据
     *
     * @param proStruct
     * @return
     */
    List<Sheet> findRepSheetByProCodeAndPart(DsnProStruct proStruct);

    /**
     * 按条件查询项目下部分制作件计划数据
     *
     * @param proStruct
     * @return
     */
    List<MakeSheet> findMakeSheetByProCodeAndPart(DsnProStruct proStruct);

    /**
     * 删除产品结构
     *
     * @param proId
     * @return
     */
    int delProStruByProId(Integer proId);

    /**
     * 按项目ID查询产品结构专业
     *
     * @param proId
     * @return
     */
    List<DsnProStruct> findSpecialTypeByProId(Integer proId);

}
